package recursos;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.component.UIInput;
import javax.faces.context.FacesContext;
import javax.faces.validator.Validator;
import javax.faces.validator.ValidatorException;

import logica.Usuario;

import org.hibernate.Query;
import org.hibernate.Session;


public class ValidadorLogin implements Validator
{
	
	public void validate(FacesContext contexto, UIComponent componente, Object contrasena)
			throws ValidatorException
	{
		
		String campoID = ((String) componente.getAttributes().get("nombreC"));
		 UIInput nombreInput = (UIInput) contexto.getViewRoot().findComponent(campoID);
		 String nombre=(String)nombreInput.getValue();
		
		if(nombre==null)
		{
			throw new ValidatorException(new FacesMessage("Debe escribir un nombre de usuario.", null));
		}		
		
		Session sesion= HibernateUtil.getSessionFactory().openSession();
		
		Query q=sesion.createQuery("from Usuario u where login=?");
		q.setParameter(0, nombre.toString());
		List<Usuario> resultados=q.list();
		sesion.close();
		
		
		if(!(resultados.size()>0))
		{
			throw new ValidatorException(new FacesMessage("El usuario no existe.", null));
		}	
				 
		 if(contrasena!=null)
		 {
		  			
			if(!resultados.get(0).getPassword().equals(contrasena))
			{
				throw new ValidatorException(new FacesMessage("La contrasena es incorrecta.", null));
			
			}
			
		 }
		 else
		 {
			throw new ValidatorException(new FacesMessage("Debe escribir una contrasena.", null));
		 }				
	}
}
